package com.hpe.fastfood.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.hpe.fastfood.pojo.Bussiness;
import com.hpe.fastfood.pojo.Type;
import com.hpe.fastfood.pojo.User;
import com.hpe.fastfood.service.BussinessService;
import com.hpe.fastfood.service.TypeService;
import com.hpe.fastfood.service.UserService;
import com.hpe.fastfood.util.Page;

/**
 * @ClassName: AdminController
 * @Description:TODO 管理员的controller
 * @author: fuchong
 * @date: 2018年11月22日 下午6:18:07
 */
@Controller
@RequestMapping(value = "admin")
public class AdminController {
	@Autowired
	private BussinessService bussinessService;

	@Autowired
	private UserService userService;

	@Autowired
	private TypeService typeService;

	@RequestMapping(value = "toAdmin")
	public String toAdmin() {
		return "/admin/index";
	}

	/**
	 * @Description:TODO 查询商户信息
	 * @author: fuchong
	 * @date: 2018年11月22日 下午7:26:10
	 * @param page
	 * @return
	 */
	@RequestMapping(value = "selectBussiness")
	public ModelAndView selectBussiness(Page page, String bussinessName) {
		ModelAndView mv = new ModelAndView();
		try {
			page = bussinessService.selectBussiness(page, bussinessName);
		} catch (Exception e) {
			// TODO: handle exception
		}
		mv.addObject("page", page);
		mv.addObject("bussinessName", bussinessName);
		mv.setViewName("admin/bussinesslist");
		return mv;
	}

	/**
	 * @Description:TODO查询所有用户
	 * @author: dwx
	 * @date: 2018年11月23日 上午10:38:37
	 * @param page
	 * @return
	 */
	@RequestMapping(value = "selectUser")
	public ModelAndView selectUser(Page page, String userName) {
		ModelAndView mv = new ModelAndView();
		try {
			page = userService.selectUser(page, userName);
		} catch (Exception e) {
			// TODO: handle exception
		}
		mv.addObject("page", page);
		mv.setViewName("admin/userlist");
		return mv;
	}

	/**
	 * @Description:TODO查询种类
	 * @author: dwx
	 * @date: 2018年11月23日 上午11:22:20
	 * @param page
	 * @return
	 */
	@RequestMapping(value = "selectType")
	public ModelAndView selectType(Page page, String typeName) {
		ModelAndView mv = new ModelAndView();
		try {
			page = typeService.selectType(page, typeName);
		} catch (Exception e) {
			// TODO: handle exception
		}
		mv.addObject("page", page);
		mv.setViewName("admin/type");
		return mv;
	}

	/**
	 * @Description:TODO跳转到种类添加页面
	 * @author: dwx
	 * @date: 2018年11月23日 下午2:46:01
	 * @return
	 */
	@RequestMapping(value = "addTypePage")
	public String addTypePage() {
		return "admin/type_add";
	}

	/**
	 * @Description:TODO新增种类
	 * @author: dwx
	 * @date: 2018年11月23日 下午3:30:16
	 * @param type
	 * @return
	 */
	@RequestMapping(value = "addType", method = RequestMethod.POST)
	public String addType(Type type) {
		int res = typeService.checkTypeName(type.getTypeName());
		if (res == 1) {// 添加失败，种类名重复
			return "redirect:/admin/addTypePage";
		} else {
			try {
				typeService.addType(type);
			} catch (Exception e) {
				// TODO: handle exception
			}
			return "redirect:/admin/selectType";
		}
	}

	/**
	 * @Description:TODO跳转到种类修改页面
	 * @author: dwx
	 * @date: 2018年11月23日 下午3:31:48
	 * @return
	 */
	@RequestMapping(value = "updateTypePage")
	public ModelAndView updateTypePage(int typeId) {
		ModelAndView mv = new ModelAndView();
		Type type = null;
		try {
			type = typeService.selectTypeById(typeId);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		mv.addObject("type", type);
		mv.setViewName("admin/type_update");
		return mv;
	}

	/**
	 * @Description:TODO修改种类信息
	 * @author: dwx
	 * @date: 2018年11月23日 下午5:03:46
	 * @param type
	 * @return
	 */
	@RequestMapping(value = "updateType", method = RequestMethod.POST)
	public String updateType(Type type) {
		try {
			typeService.updateType(type);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return "redirect:/admin/selectType";
	}

	/**
	 * @Description:TODO用户账户状态更改
	 * @author: dwx
	 * @date: 2018年11月24日 下午2:32:26
	 * @param userId
	 * @return
	 */
	@RequestMapping(value = "changeUser")
	public String changeUser(int userId) {
		User user = new User();

		user = userService.selectUserById(userId);
		if (user.getState() % 2 == 1) {
			user.setState(0);
		} else {
			user.setState(1);
		}

		try {
			userService.changeUser(user);
		} catch (Exception e) {
			e.printStackTrace();
		}

		return "redirect:/admin/selectUser";
	}

	/**
	 * @Description:TODO商户账户状态更改
	 * @author: dwx
	 * @date: 2018年11月24日 下午2:42:57
	 * @param bussinessId
	 * @return
	 */
	@RequestMapping(value = "changeBussiness")
	public String changeBussiness(int bussinessId) {
		Bussiness bussiness = new Bussiness();

		bussiness = bussinessService.selectBussinessById(bussinessId);
		if (bussiness.getState() % 2 == 1) {
			bussiness.setState(0);
		} else {
			bussiness.setState(1);
		}

		try {
			bussinessService.changeBussiness(bussiness);
		} catch (Exception e) {
			e.printStackTrace();
		}

		return "redirect:/admin/selectBussiness";
	}

	/**
	 * @Description:TODO种类状态的修改
	 * @author: dwx
	 * @date: 2018年11月24日 下午3:09:45
	 * @param typeId
	 * @return
	 */
	@RequestMapping(value = "changeType")
	public String changeType(int typeId) {
		Type type = new Type();

		type = typeService.selectTypeById(typeId);
		if (type.getState() % 2 == 1) {
			type.setState(0);
		} else {
			type.setState(1);
		}

		try {
			typeService.changeType(type);
		} catch (Exception e) {
			e.printStackTrace();
		}

		return "redirect:/admin/selectType";
	}
}
